home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Installer SDK Cornucopia 1.0.2 / DeveloperInterfaces / AIncludes / InstallerScript.a
Encoding:
Text File  |  1996-06-21  |  14.6 KB  |  486 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        InstallerScript.a
  3. ;
  4. ;    Contains:    xxx put contents here xxx
  5. ;
  6. ;    Version:    Technology:    
  7. ;                Package:    4.1a2
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__INSTALLERSCRIPT__') = 'UNDEFINED' THEN
  21. __INSTALLERSCRIPT__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  25.     include 'Files.a'
  26.     ENDIF
  27. ;        include 'Types.a'                                            ;
  28. ;            include 'ConditionalMacros.a'                            ;
  29. ;        include 'MixedMode.a'                                        ;
  30. ;        include 'OSUtils.a'                                        ;
  31. ;            include 'Memory.a'                                        ;
  32. ;            include 'Patches.a'                                    ;
  33. ;                include 'Kernel.a'                                    ;
  34. ;                    include 'Errors.a'                                ;
  35. ;                    include 'MachineExceptions.a'                    ;
  36. ;                    include 'Timing.a'                                ;
  37. ;                include 'OrderedItems.a'                            ;
  38. ;        include 'Finder.a'                                            ;
  39.  
  40.     IF &TYPE('__MEMORY__') = 'UNDEFINED' THEN
  41.     include 'Memory.a'
  42.     ENDIF
  43.  
  44.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  45.     include 'MixedMode.a'
  46.     ENDIF
  47.  
  48.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  49.     include 'Types.a'
  50.     ENDIF
  51.     kMaxNumOfFunctionParams: SET 12
  52. CallBackPBRec             RECORD    0
  53. fSelector                 ds.l   1        ; offset: $0 (0)
  54. fResult                     ds.l   1        ; offset: $4 (4)
  55. fParam                     ds.l   12        ; offset: $8 (8)
  56. sizeof                     EQU *            ; size:   $38 (56)
  57.                         ENDR
  58.  
  59. ; typedef struct CallBackPBRec  *CallBackPBPtr
  60. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  61. ;
  62. ;                                        Rule Function
  63. ;
  64. ;
  65. ;    Code Resource Calling Interface:
  66. ;
  67. ;        long YourRuleFunction( RuleFunctionPBPtr );
  68. ;
  69. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  70.     kTRUERuleFunctionResult: SET 1
  71.     kFALSERuleFunctionResult: SET 0
  72. RuleFunctionPBRec         RECORD    0
  73. fCallBackProcPtr         ds.l   1        ; offset: $0 (0)
  74. fTargetVRefNum             ds.w   1        ; offset: $4 (4)
  75. fTargetFolderDirID         ds.l   1        ; offset: $6 (6)
  76. fSystemVRefNum             ds.w   1        ; offset: $A (10)
  77. fSystemBlessedDirID         ds.l   1        ; offset: $C (12)
  78. fRefCon                     ds.l   1        ; offset: $10 (16)
  79. sizeof                     EQU *            ; size:   $14 (20)
  80.                         ENDR
  81.  
  82. ; typedef struct RuleFunctionPBRec  RuleFunctionPBRec, *RuleFunctionPBPtr
  83. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  84. ;
  85. ;                                        Action Atom Function
  86. ;
  87. ;
  88. ;    Code Resource Calling Interface:
  89. ;
  90. ;        long YourActionAtomFunction( ActionAtom2PBPtr );
  91. ;
  92. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  93.  
  94. before                            EQU        0
  95. after                            EQU        1
  96. cleanUpCancel                    EQU        2
  97.  
  98. ; typedef SInt8             InstallationStage
  99.  
  100. kActionAtomResultFatalError        EQU        -1
  101. kActionAtomResultContinue        EQU        0
  102. kActionAtomResultCancel            EQU        1
  103.  
  104. ; typedef long                 ActionAtomResult
  105. ActionAtom2PBRec         RECORD    0
  106. fMessageID                 ds.b   1        ; offset: $0 (0)
  107. padByte                     ds.b   1        ; offset: $1 (1)
  108. fStaticDataHdl             ds.l   1        ; offset: $2 (2)
  109. fCallBackProcPtr         ds.l   1        ; offset: $6 (6)
  110. fTargetVRefNum             ds.w   1        ; offset: $A (10)
  111. fTargetFolderDirID         ds.l   1        ; offset: $C (12)
  112. fSystemVRefNum             ds.w   1        ; offset: $10 (16)
  113. fSystemBlessedDirID         ds.l   1        ; offset: $12 (18)
  114. fRefCon                     ds.l   1        ; offset: $16 (22)
  115. fDoingInstall             ds.b   1        ; offset: $1A (26)
  116. fDidLiveUpdate             ds.b   1        ; offset: $1B (27)
  117. fInstallerTempDirID         ds.l   1        ; offset: $1C (28)
  118. sizeof                     EQU *            ; size:   $20 (32)
  119.                         ENDR
  120.  
  121. ; typedef struct ActionAtom2PBRec  ActionAtom2PBRec, *ActionAtom2PBPtr
  122. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  123. ;
  124. ;                                        Version Compare Function
  125. ;
  126. ;
  127. ;    Code Resource Calling Interface:
  128. ;
  129. ;        long YourComputeVersionFunctionSetupFunction( ComputeVersionPBPtr );
  130. ;
  131. ;    Return the version in BCD format.  For example:  ver 2.0.1 final release is 0x02018000
  132. ;
  133. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  134. ComputeVersionPB         RECORD    0
  135. fCallBackProcPtr         ds.l   1        ; offset: $0 (0)
  136. sizeof                     EQU *            ; size:   $4 (4)
  137.                         ENDR
  138.  
  139. ; typedef struct ComputeVersionPB  ComputeVersionPB, *ComputeVersionPBPtr
  140. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  141. ;
  142. ;                                        Target Search Function
  143. ;
  144. ;
  145. ;    Code Resource Calling Interface:
  146. ;
  147. ;        SearchResult YourTargetSearchFunction( SearchProcedurePBPtr );
  148. ;
  149. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  150.  
  151. kFatalSearchError                EQU        -1
  152. kSearchSuccessful                EQU        0
  153. kCancelSearchAndInstallation    EQU        1
  154.  
  155. ; typedef SInt8             SearchResult
  156. FoundFileRec             RECORD    0
  157. vRefNum                     ds.w   1        ; offset: $0 (0)
  158. parID                     ds.l   1        ; offset: $2 (2)
  159. name                     ds.l   16        ; offset: $6 (6)
  160. fReferenceID             ds.w   1        ; offset: $46 (70)
  161. sizeof                     EQU *            ; size:   $48 (72)
  162.                         ENDR
  163.  
  164. ; typedef struct FoundFileRec  FoundFileRec, *FoundFileArrayPtr, **FoundFileArrayHdl
  165. SearchProcedurePBRec     RECORD    0
  166. fCallBackProcPtr         ds.l   1        ; offset: $0 (0)
  167. fTargetVRefNum             ds.w   1        ; offset: $4 (4)
  168. fTargetFolderDirID         ds.l   1        ; offset: $6 (6)
  169. fSystemVRefNum             ds.w   1        ; offset: $A (10)
  170. fSystemBlessedDirID         ds.l   1        ; offset: $C (12)
  171. fRefCon                     ds.l   1        ; offset: $10 (16)
  172. fFileSpecType             ds.l   1        ; offset: $14 (20)
  173. fFileSpecCreator         ds.l   1        ; offset: $18 (24)
  174. fFileSpecCrDate             ds.l   1        ; offset: $1C (28)
  175. fFileSpecPath             ds.l   64        ; offset: $20 (32)
  176. fFoundFilesArray         ds.l   1        ; offset: $120 (288)
  177. sizeof                     EQU *            ; size:   $124 (292)
  178.                         ENDR
  179.  
  180. ; typedef struct SearchProcedurePBRec  SearchProcedurePBRec, *SearchProcedurePBPtr
  181. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  182. ;
  183. ;                                        Setup Function
  184. ;
  185. ;
  186. ;    Code Resource Calling Interface:
  187. ;
  188. ;        long YourSetupFunction( EnvironmentSetupPBPtr );
  189. ;
  190. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  191.     kContinueInstallerSetup: SET 0
  192.     kQuitInstallerNow: SET -1
  193. EnvironmentSetupPB         RECORD    0
  194. fCallBackProcPtr         ds.l   1        ; offset: $0 (0)
  195. fTargetFSSpec             ds     FSSpec    ; offset: $4 (4)
  196. fSystemVRefNum             ds.w   1        ; offset: $4A (74)
  197. sizeof                     EQU *            ; size:   $4C (76)
  198.                         ENDR
  199.  
  200. ; typedef struct EnvironmentSetupPB  *EnvironmentSetupPBPtr
  201. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  202. ;
  203. ;                                        Atom Extender Function
  204. ;
  205. ;
  206. ;    Code Resource Calling Interface:
  207. ;
  208. ;        long YourAtomExtenderFunction( ExtenderPBPtr );
  209. ;
  210. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  211.  
  212. kFileAtomDataFork                EQU        0
  213. kFileAtomRsrcFork                EQU        1
  214. kFileAtomRsrcForkFromDataFork    EQU        2
  215. kRsrcAtom                        EQU        3
  216. kFontAtom                        EQU        4
  217. kActionAtom                        EQU        5
  218.  
  219. ; typedef SInt8             DataType
  220.  
  221. kFatalError                        EQU        -1
  222. kContinueAsNormal                EQU        0
  223. kCancelInstallation                EQU        1
  224. kCopiedData                        EQU        2
  225.  
  226. ; typedef SInt16             ExtenderResultCode
  227.  
  228. kInitialize                        EQU        0
  229. kBeforePart                        EQU        1
  230. kAfterPart                        EQU        2
  231. kSuccess                        EQU        3
  232. kCancel                            EQU        4
  233.  
  234. ; typedef SInt8             ExtenderMessageID
  235. EnvironsHeaderRec         RECORD    0
  236. fMessageID                 ds.b   1        ; offset: $0 (0)
  237. pad1                     ds.b   1        ; offset: $1 (1)
  238. fStaticDataHdl             ds.l   1        ; offset: $2 (2)
  239. fCallBackProcPtr         ds.l   1        ; offset: $6 (6)
  240. fTargetVRefNum             ds.w   1        ; offset: $A (10)
  241. fTargetFolderDirID         ds.l   1        ; offset: $C (12)
  242. fSystemVRefNum             ds.w   1        ; offset: $10 (16)
  243. fSystemBlessedDirID         ds.l   1        ; offset: $12 (18)
  244. fRefCon                     ds.l   1        ; offset: $16 (22)
  245. fDataType                 ds.b   1        ; offset: $1A (26)
  246. pad2                     ds.b   1        ; offset: $1B (27)
  247. sizeof                     EQU *            ; size:   $1C (28)
  248.                         ENDR
  249.  
  250. ; typedef struct EnvironsHeaderRec  EnvironsHeaderRec
  251. CopyHeaderRec             RECORD    0
  252. fSourceFile                 ds     FSSpec    ; offset: $0 (0)
  253. fTargetFile                 ds     FSSpec    ; offset: $46 (70)
  254. fTotalTargetSize         ds.l   1        ; offset: $8C (140)
  255. fTargetPosStart             ds.l   1        ; offset: $90 (144)
  256. fTargetPartSize             ds.l   1        ; offset: $94 (148)
  257. fSourcePartSize             ds.l   1        ; offset: $98 (152)
  258. fInstallerTempDirID         ds.l   1        ; offset: $9C (156)
  259. sizeof                     EQU *            ; size:   $A0 (160)
  260.                         ENDR
  261.  
  262. ; typedef struct CopyHeaderRec  CopyHeaderRec
  263. BasicCopyRec             RECORD    0
  264. fEnvironmentHeader         ds     EnvironsHeaderRec ; offset: $0 (0)
  265. fCopyPBHeader             ds     CopyHeaderRec ; offset: $1C (28)
  266. sizeof                     EQU *            ; size:   $BC (188)
  267.                         ENDR
  268.  
  269. ; typedef struct BasicCopyRec  BasicCopyRec
  270. RsrcCopyRec             RECORD    0
  271. fEnvironmentHeader         ds     EnvironsHeaderRec ; offset: $0 (0)
  272. fCopyPBHeader             ds     CopyHeaderRec ; offset: $1C (28)
  273. fSourceRsrcType             ds.l   1        ; offset: $BC (188)
  274. fSourceRsrcID             ds.w   1        ; offset: $C0 (192)
  275. fTargetRsrcType             ds.l   1        ; offset: $C2 (194)
  276. fTargetRsrcID             ds.w   1        ; offset: $C6 (198)
  277. fTargetRsrcName             ds.l   64        ; offset: $C8 (200)
  278. fTargetRsrcAttrs         ds.w   1        ; offset: $1C8 (456)
  279. sizeof                     EQU *            ; size:   $1CA (458)
  280.                         ENDR
  281.  
  282. ; typedef struct RsrcCopyRec  RsrcCopyRec
  283. FontCopyRec             RECORD    0
  284. fEnvironmentHeader         ds     EnvironsHeaderRec ; offset: $0 (0)
  285. fCopyPBHeader             ds     CopyHeaderRec ; offset: $1C (28)
  286. fSourceFontRsrcType         ds.l   1        ; offset: $BC (188)
  287. fSourceFontRsrcID         ds.w   1        ; offset: $C0 (192)
  288. fTargetFontRsrcType         ds.l   1        ; offset: $C2 (194)        ; FONT, NFNT, or sfnt
  289. fTargetFontRsrcID         ds.w   1        ; offset: $C6 (198)
  290. fTargetFontRsrcName         ds.l   64        ; offset: $C8 (200)
  291. fTargetFontRsrcAttrs     ds.w   1        ; offset: $1C8 (456)
  292. fFamilyName                 ds.l   64        ; offset: $1CA (458)
  293. fFamilyID                 ds.w   1        ; offset: $2CA (714)
  294. fFontSize                 ds.w   1        ; offset: $2CC (716)
  295. fFontStyle                 ds.w   1        ; offset: $2CE (718)
  296. sizeof                     EQU *            ; size:   $2D0 (720)
  297.                         ENDR
  298.  
  299. ; typedef struct FontCopyRec  FontCopyRec
  300. ExtenderPBRec             RECORD    0
  301. fBasicPBRec                 ds     BasicCopyRec ; offset: $0 (0)
  302.                          ORG 0
  303. fFileCopyPBRec             ds     BasicCopyRec ; offset: $0 (0)
  304.                          ORG 0
  305. fRsrcCopyPBRec             ds     RsrcCopyRec ; offset: $0 (0)
  306.                          ORG 0
  307. fFontCopyPBRec             ds     FontCopyRec ; offset: $0 (0)
  308.                          ORG 720
  309. sizeof                     EQU *            ; size:   $2D0 (720)
  310.                         ENDR
  311.  
  312. ; typedef union ExtenderPBRec  *ExtenderPBPtr
  313. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  314. ;
  315. ;                                        Callback Glue Routines
  316. ;
  317. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  318. ; Memory Related
  319. ;
  320. ; Handle INewHandle(InstallerCallBackUPP pCallBackProcPtr, unsigned long newHandleSize)
  321. ;
  322.     IF GENERATINGCFM THEN
  323.         IMPORT_CFM_FUNCTION    INewHandle
  324.     ENDIF
  325.  
  326. ;
  327. ; void IDisposHandle(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle)
  328. ;
  329.     IF GENERATINGCFM THEN
  330.         IMPORT_CFM_FUNCTION    IDisposHandle
  331.     ENDIF
  332.  
  333. ;
  334. ; void IHLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle)
  335. ;
  336.     IF GENERATINGCFM THEN
  337.         IMPORT_CFM_FUNCTION    IHLock
  338.     ENDIF
  339.  
  340. ;
  341. ; void IHUnLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle)
  342. ;
  343.     IF GENERATINGCFM THEN
  344.         IMPORT_CFM_FUNCTION    IHUnLock
  345.     ENDIF
  346.  
  347. ; Atom Extender Related
  348. ;
  349. ; OSErr ReadSourceData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr)
  350. ;
  351.     IF GENERATINGCFM THEN
  352.         IMPORT_CFM_FUNCTION    ReadSourceData
  353.     ENDIF
  354.  
  355. ;
  356. ; OSErr WriteTargetData(InstallerCallBackUPP pCallBackProcPtr, long count, Ptr storagePtr)
  357. ;
  358.     IF GENERATINGCFM THEN
  359.         IMPORT_CFM_FUNCTION    WriteTargetData
  360.     ENDIF
  361.  
  362. ;
  363. ; OSErr ReadTargetData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr)
  364. ;
  365.     IF GENERATINGCFM THEN
  366.         IMPORT_CFM_FUNCTION    ReadTargetData
  367.     ENDIF
  368.  
  369. ;
  370. ; OSErr SetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset)
  371. ;
  372.     IF GENERATINGCFM THEN
  373.         IMPORT_CFM_FUNCTION    SetTargetDataPos
  374.     ENDIF
  375.  
  376. ;
  377. ; OSErr GetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset)
  378. ;
  379.     IF GENERATINGCFM THEN
  380.         IMPORT_CFM_FUNCTION    GetTargetDataPos
  381.     ENDIF
  382.  
  383. ;
  384. ; OSErr GetTargetDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength)
  385. ;
  386.     IF GENERATINGCFM THEN
  387.         IMPORT_CFM_FUNCTION    GetTargetDataEOF
  388.     ENDIF
  389.  
  390. ;
  391. ; OSErr SetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset)
  392. ;
  393.     IF GENERATINGCFM THEN
  394.         IMPORT_CFM_FUNCTION    SetSourceDataPos
  395.     ENDIF
  396.  
  397. ;
  398. ; OSErr GetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset)
  399. ;
  400.     IF GENERATINGCFM THEN
  401.         IMPORT_CFM_FUNCTION    GetSourceDataPos
  402.     ENDIF
  403.  
  404. ;
  405. ; OSErr GetSourceDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength)
  406. ;
  407.     IF GENERATINGCFM THEN
  408.         IMPORT_CFM_FUNCTION    GetSourceDataEOF
  409.     ENDIF
  410.  
  411. ; Action Atom Related
  412. ;
  413. ; OSErr MakeFSSpecFromFileSpecID(InstallerCallBackUPP pCallBackProcPtr, short pFileSpecID, FSSpec *pFSSpecPtr, StringHandle *pExtraPathInfo)
  414. ;
  415.     IF GENERATINGCFM THEN
  416.         IMPORT_CFM_FUNCTION    MakeFSSpecFromFileSpecID
  417.     ENDIF
  418.  
  419. ;
  420. ; void SuspendWaitCursor(InstallerCallBackUPP pCallBackProcPtr)
  421. ;
  422.     IF GENERATINGCFM THEN
  423.         IMPORT_CFM_FUNCTION    SuspendWaitCursor
  424.     ENDIF
  425.  
  426. ;
  427. ; void ResumeWaitCursor(InstallerCallBackUPP pCallBackProcPtr)
  428. ;
  429.     IF GENERATINGCFM THEN
  430.         IMPORT_CFM_FUNCTION    ResumeWaitCursor
  431.     ENDIF
  432.  
  433. ;
  434. ; void IncrementStatusBar(InstallerCallBackUPP pCallBackProcPtr, short pIncrementAmount)
  435. ;
  436.     IF GENERATINGCFM THEN
  437.         IMPORT_CFM_FUNCTION    IncrementStatusBar
  438.     ENDIF
  439.  
  440. ;
  441. ; Boolean IsUserInteractionAllowed(InstallerCallBackUPP pCallBackProcPtr)
  442. ;
  443.     IF GENERATINGCFM THEN
  444.         IMPORT_CFM_FUNCTION    IsUserInteractionAllowed
  445.     ENDIF
  446.  
  447. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  448. ;
  449. ;                                        Obsolete Interfaces
  450. ;
  451. ;///////////////////////////////////////////////////////////////////////////////////////////////////
  452. ; Old Action Atom Parameter Block
  453. AAPBRec                 RECORD    0
  454. targetVRefNum             ds.w   1        ; offset: $0 (0)
  455. blessedDirID             ds.l   1        ; offset: $2 (2)
  456. aaRefCon                 ds.l   1        ; offset: $6 (6)
  457. doingInstall             ds.b   1        ; offset: $A (10)
  458. whichStage                 ds.b   1        ; offset: $B (11)
  459. didLiveUpdate             ds.b   1        ; offset: $C (12)
  460. padByte                     ds.b   1        ; offset: $D (13)
  461. installerTempDirID         ds.l   1        ; offset: $E (14)
  462. sizeof                     EQU *            ; size:   $12 (18)
  463.                         ENDR
  464.  
  465. ; typedef struct AAPBRec     *AAPBRecPtr
  466. ; Action Handler Parameter Block
  467. ActionHandlerPB         RECORD    0
  468. fStaticDataHdl             ds.l   1        ; offset: $0 (0)
  469. fCallBackProcPtr         ds.l   1        ; offset: $4 (4)
  470. fTargetVRefNum             ds.w   1        ; offset: $8 (8)
  471. fTargetFolderDirID         ds.l   1        ; offset: $A (10)
  472. fSystemVRefNum             ds.w   1        ; offset: $E (14)
  473. fSystemBlessedDirID         ds.l   1        ; offset: $10 (16)
  474. fActionClassID             ds.w   1        ; offset: $14 (20)
  475. fActionIdentifier         ds.w   1        ; offset: $16 (22)
  476. fParam0                     ds.l   1        ; offset: $18 (24)
  477. fParam1                     ds.l   1        ; offset: $1C (28)
  478. fParam2                     ds.l   1        ; offset: $20 (32)
  479. fParam3                     ds.l   1        ; offset: $24 (36)
  480. fResultPtr                 ds.l   1        ; offset: $28 (40)
  481. sizeof                     EQU *            ; size:   $2C (44)
  482.                         ENDR
  483.  
  484. ; typedef struct ActionHandlerPB  *ActionHandlerPBPtr
  485.     ENDIF ; __INSTALLERSCRIPT__
  486.